在開發過程中,驗證參數是必須的,以前前輩有教過,欄位必填或有數值限制盡量在前端 js 就直接擋掉,不要等進到後端(WebForm年代),然而這個概念我覺得跟後來 ModelState.IsValid 很相似,我們會在進入 Controller 第一步就驗證模型是否符合我們設定的格式(必填/區間....),本篇就用 API 來作範例。
我們先建立一個 ProductsController
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    [HttpPost]
    public IActionResult Post(Product product)
    {
        if (ModelState.IsValid)
        {
           //驗證通過後可執行的方法寫此
            return Ok(product);
        }
        else
        {
            return BadRequest();
        }
    }
}
上面的 Post 方法會接收一個 Product 的 Model,以下是定義這個 Model 每個參數的驗證
若違反以上兩個其中一個條件則會回傳 Status Code 400,並且連 ErrorMessage 一併回傳。
public class Product
{
    public int Id { get; set; }
    [Required(ErrorMessage ="請輸入名稱")]
    public string Name { get; set; }
    public decimal Price { get; set; }
    [Range(0, 999 ,ErrorMessage = "重量介於0~999之間")]
    public double Weight { get; set; }
}
Name 屬性未輸入
Weight 超過 999
除了 [Required]、[Range] 還有其他屬性可以使用,可參考官方文章